package ClassicalSortingAlgorithm;

/**
 * @BelongsProject: LeetCode
 * @BelongsPackage: ClassicalSortingAlgorithm
 * @Author: song
 * @CreateTime: 2022-09-16  01:37
 * @Description: 稳定性：稳定；时间复杂度 ：最佳：O(n) ，最差：O(n2)， 平均：O(n2)；空间复杂度 ：O(1)；排序方式 ：In-place
 * @Version: 1.0
 */

public class bubbleSort {
    public static void main(String[] args) {
        int[] nums = {2,8,97,45,456,21,34,6,78,65};
        bubbleSort(nums);
        for (int i = 0; i < nums.length; i++) {
            System.out.print(nums[i] + " ");
        }

    }
    public static int[] bubbleSort(int[] nums){
        for (int i = 1; i < nums.length; i++) {
            boolean flag = true; // 设置一个标志位，如果为TRUE的话，表示该轮循环没有经历过数值的交换，
            // 说明这个数组已经有序了，为了减少循环次数，直接跳出循环，返回一个有序的数组即可。
            for (int j = 0; j < nums.length -i; j++){
                if (nums[j] > nums[j + 1]){
                    int temp = nums[j];
                    nums[j] = nums[j + 1];
                    nums[j+1] = temp;
                    flag = false;
                }
            }
            if (flag)
                break;
        }
        return nums;
    }
}
